本文介绍事件总线EventBridge向HTTP/HTTPS类型的事件目标推送事件时采用的签名算法。
背景信息
在事件总线EventBridge的基本模型中,事件从事件源被投递到事件总线,经过规则的过滤和转换处理,最终被投递给多种事件目标,完成事件的处理。所以,HTTP/HTTPS类型的事件目标通常需要暴露公网Endpoint以接收事件总线EventBridge推送的事件内容。为了保证数据安全,HTTP/HTTPS类型的事件目标需要识别接受的请求是否是事件总线EventBridge发送的请求。
事件总线EventBridge生成签名
事件目标校验签名
待签名字符串生成规范
StringToSign = schema+"://"+目标地址+"path"+"?"+"queryParam" + "\n" + 官方固定header + "\n" + body
服务端发送的请求消息的RequestHeader里携带了官方固定header参数,对官方固定header参数的解释如下:
- x-eventbridge-signature-timestamp:请求发送的时间戳。当发送时间和接收时间的间隔超过60s,该时间戳被认为失效,生成签名失败以防止重放攻击。
- x-eventbridge-signature-method:签名算法。默认为HMAC-SHA1算法。
- x-eventbridge-signature-version:签名版本。默认为1.0。
- x-eventbridge-signature-url:签名证书地址。
- x-eventbridge-signature-token:用户自定义签名Token。该参数可以选填,如果您填写了该参数,需要在客户端生成签名时传入该token。使用说明,请参见路由到HTTP端点地址。
注意 官方固定header参数严格按照上述的先后顺序进行传递,且参数之间使用“\n”进行连接。例如:
"x-eventbridge-signature-timestamp: <your timestamp>" + "\n" +"x-eventbridge-signature-method:
HMAC-SHA1"+ "\n" +"x-eventbridge-signature-version: 1.0" + "\n" +"x-eventbridge-signature-url:
<your url>"
。